#include "time.h"
#include "windows.h"

// http://stackoverflow.com/a/323302/623622

unsigned long mix(unsigned long a, unsigned long b, unsigned long c);

void srand2()
{
	unsigned long seed = mix(clock(), (unsigned long)time(NULL), GetProcessId(GetModuleHandle(NULL)));
	srand(seed);
}

// http://www.concentric.net/~Ttwang/tech/inthash.htm
unsigned long mix(unsigned long a, unsigned long b, unsigned long c)
{
    a=a-b;  a=a-c;  a=a^(c >> 13);
    b=b-c;  b=b-a;  b=b^(a << 8);
    c=c-a;  c=c-b;  c=c^(b >> 13);
    a=a-b;  a=a-c;  a=a^(c >> 12);
    b=b-c;  b=b-a;  b=b^(a << 16);
    c=c-a;  c=c-b;  c=c^(b >> 5);
    a=a-b;  a=a-c;  a=a^(c >> 3);
    b=b-c;  b=b-a;  b=b^(a << 10);
    c=c-a;  c=c-b;  c=c^(b >> 15);
    return c;
}
